<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /*
      回调函数 
      高阶函数
      柯里化函数
      */

      /* 
      回调函数   满足3个条件
        1. 我们定义的
        2. 我们没有直接调用
        3. 但最终它会执行
      */
      // [1, 2, 3].forEach((item, index) => {
      //   console.log(item, index)
      // })
      // console.log('forEach之后')
      // 同步遍历: 遍历每个元素, 且针对每个元素都调用一个回调函数, 所有元素都遍历完forEach才结束
      // 异步遍历: 启动遍历任务, 但还没有真正调用回调函数就结束forEach函数

      setTimeout(() => {
        console.log('callback调用了')
      }, 0);
      console.log('setTimeout之后')

      // div.onClick = function () {
        
      // }

      const p = new Promise((resolve, reject) => {  // 执行器函数  excutor
        console.log('执行器执行')
        // 执行异步操作 => 发异步请求
        // 如果成功了, 调用resolve(value)
        // 如果失败了, 调用reject(reason)
        // setTimeout(() => {
        //   resolve(3)
        // }, 1000);
        resolve(3)

      })
      console.log('new Promise之后')
      
      p.then(
        value => {
          console.log('成功的回调执行', value)
        },
        reason => {}
      )
      console.log('.then之后')

    </script>
  </body>
</html>
